package main

import (
	"fmt"
	"reflect"
)

func testReflect(i interface{}){
	refType := reflect.TypeOf(i)
	refValue := reflect.ValueOf(i)


	//获取变量的的类别：
	//第一种方式：
	k1 := refType.Kind()
	fmt.Println(k1)

	//第二种方式：
	k2 := refValue.Kind()
	fmt.Println(k2)

	//reValue转成空接口
	i2 := refValue.Interface()
	n,flag := i2.(Student)	//类别断言
	if flag ==true{
		fmt.Printf("结构体的类型是：%T",n)
	}
}

type Student struct{
	Name string
	Age int
}

func main(){
	s := Student{
		Name : "Lee",
		Age : 31,
	}

	testReflect(s)
}